package com.tomecode.mjprocessor.assembly;

import java.util.ArrayList;
import java.util.List;

import com.tomecode.mjprocessor.assembly.type.ProjectActions;

/***
 * 
 * This class contains identificator of project and list of process actions
 * 
 * @author Frastia Tomas
 * 
 */
public final class Project {

	/**
	 * project groupId - This is generally unique amongst an organization or a
	 * project. For example, all core Maven artifacts do (well, should) live
	 * under the groupId org.apache.maven
	 */
	private String groupId;
	/**
	 * project artifactID - is generally the name that the project is known by
	 */
	private String artifactId;

	/**
	 * list of {@link ProjectActions}
	 */
	private final List<ProjectActions> types;

	/**
	 * Construktor
	 * 
	 * @param groupId
	 * @param artifactId
	 */
	public Project(String groupId, String artifactId) {
		this.groupId = groupId;
		this.artifactId = artifactId;
		this.types = new ArrayList<ProjectActions>();
	}

	/**
	 * get {@link #getGroupId()}
	 * 
	 * @return
	 */
	public final String getGroupId() {
		return groupId;
	}

	/**
	 * set {@link #groupId}
	 * 
	 * @param groupId
	 */
	public final void setGroupId(String groupId) {
		this.groupId = groupId;
	}

	/**
	 * get {@link #artifactId}
	 * 
	 * @return
	 */
	public final String getArtifactId() {
		return artifactId;
	}

	/**
	 * set {@link #artifactId}
	 * 
	 * @param artifactId
	 */
	public final void setArtifactId(String artifactId) {
		this.artifactId = artifactId;
	}

	/**
	 * get list of {@link ProjectActions}
	 * 
	 * @return
	 */
	public final List<ProjectActions> getTypes() {
		return types;
	}

	/**
	 * add new {@link ProjectActions}
	 * 
	 * @param projectActions
	 */
	public final void addTypes(ProjectActions projectActions) {
		this.types.add(projectActions);
	}
}
